package pe.edu.unmsm.ocaa.workspace.presentacion.controller.procesos;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import org.primefaces.event.SelectEvent;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import pe.edu.unmsm.ocaa.workspace.negocio.modelo.dto.GrupoDTO;
import pe.edu.unmsm.ocaa.workspace.negocio.servicio.GrupoService;

@Controller
@Scope("view")
public class GrupoController {

	/**************ATRIBUTOS***************/
	private List<GrupoDTO> grupos;
	private GrupoDTO grupoSeleccionado;
	private GrupoDTO grupoEditar;
	private boolean editarHabilitado;
	private boolean eliminarHabilitado;

	@Resource
	GrupoService grupoService;
	/**************INICIALIZACION*************/
	
	@PostConstruct
	private void init(){
		setGrupos(grupoService.listarGrupos());
		setEditarHabilitado(false);
		setEliminarHabilitado(false);
	}
	public GrupoController() {
		setGrupoEditar(new GrupoDTO());
	}
	
	/****************NAVEGACION*************/	
	public void nuevoGrupo(ActionEvent ev){
		setGrupoEditar(new GrupoDTO());
		setGrupoSeleccionado(null);
		setEditarHabilitado(false);
		setEliminarHabilitado(false);
	}
	
	public void editarGrupo(ActionEvent ev){
		setGrupoEditar(grupoService.obtenerGrupoxId(getGrupoSeleccionado().getIdGrupo()));
	}
	
	public void eliminarGrupo(ActionEvent ev){
		grupoService.eliminarGrupo(getGrupoSeleccionado().getIdGrupo());
		setGrupos(grupoService.listarGrupos());
		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Exito", "El Grupo se elimino Correctamente"));
		setEditarHabilitado(false);
		setEliminarHabilitado(false);
	}
	public void guardarGrupo(ActionEvent ev){
		grupoService.guardarGrupo(getGrupoEditar());
		setGrupos(grupoService.listarGrupos());
		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Exito", "El Grupo se guardo Correctamente"));
		setEditarHabilitado(false);
		setEliminarHabilitado(false);
	}
	
	public void habilitarBotones(SelectEvent ev){
		setEditarHabilitado(true);
		setEliminarHabilitado(true);
	}
	
	/***************GETTERS Y SETTERS*********************/
	public List<GrupoDTO> getGrupos() {
		return grupos;
	}
	public void setGrupos(List<GrupoDTO> grupos) {
		this.grupos = grupos;
	}
	public GrupoDTO getGrupoSeleccionado() {
		return grupoSeleccionado;
	}
	public void setGrupoSeleccionado(GrupoDTO grupoSeleccionado) {
		this.grupoSeleccionado = grupoSeleccionado;
	}
	public GrupoDTO getGrupoEditar() {
		return grupoEditar;
	}
	public void setGrupoEditar(GrupoDTO grupoEditar) {
		this.grupoEditar = grupoEditar;
	}
	public boolean isEditarHabilitado() {
		return editarHabilitado;
	}
	public void setEditarHabilitado(boolean editarHabilitado) {
		this.editarHabilitado = editarHabilitado;
	}
	public boolean isEliminarHabilitado() {
		return eliminarHabilitado;
	}
	public void setEliminarHabilitado(boolean eliminarHabilitado) {
		this.eliminarHabilitado = eliminarHabilitado;
	}
	


}
